package com.td.framework.utils;
/**
 * 
 * Title: 字符过滤器
 * Description: 在搜索时过滤过滤特殊的字符
 * Copyright: Copyright (c) 2008
 * Company 北京水软科技有限公司
 *
 * @author  FLT007
 * @version 1.0
 */
public class StringFilter {
	/**
	 * 判断是否含有特殊字符
	 * @param inStr
	 * @return
	 */
	public static boolean hasSpecialChars(String inStr){   
        boolean   flag=false;   
        if((inStr!=null)&&(inStr.length()>0)){   
            char c;   
            for(int i=0;i<=inStr.length()-1;i++){   
                c=inStr.charAt(i);               
                switch(c){                  
                    case '^':flag=true;break;   
                    case '[':flag=true;break;   
                    case '`':flag=true;break;   
                    case '~':flag=true;break; 
                    case '!':flag=true;break; 
                    case '@':flag=true;break; 
                    case '#':flag=true;break; 
                    case '$':flag=true;break; 
                    case '%':flag=true;break; 
                    case '&':flag=true;break; 
                    case '*':flag=true;break;  
                    case '+':flag=true;break; 
                    case '=':flag=true;break; 
                    case '|':flag=true;break; 
                    case '\\':flag=true;break; 
                    case '{':flag=true;break; 
                    case '}':flag=true;break; 
                    case ':':flag=true;break; 
                    case ';':flag=true;break; 
                    case '\'':flag=true;break; 
                    case '.':flag=true;break;
                    case '<':flag=true;break; 
                    case '>':flag=true;break; 
                    case '/':flag=true;break; 
                    case ']':flag=true;break; 
                    case '(':flag=true;break; 
                    case ')':flag=true;break; 
                    case '?':flag=true;break; 
                    case '_':flag=true;break;
                }   
            }   
        }   
        return   flag;   
    } 
	/**
	 * 过滤特殊字符
	 * @param inStr
	 * @return
	 */
    public static String filter(String inStr){//传值到这里    
        if(!hasSpecialChars(inStr)){//如果没有特殊字符,就返回原字符串      
        	return   inStr;   
        }   
        StringBuffer filtered = new StringBuffer(inStr.length());   
        char   c;   
        for(int i=0;i<=inStr.length()-1;i++){   
        	c=inStr.charAt(i); 
        	switch(c){    
	            case '^':filtered.append("");break;   
	            case '[':filtered.append("");break;   
	            case '`':filtered.append("");break;   
	            case '~':filtered.append("");break; 
	            case '!':filtered.append("");break;
	            case '@':filtered.append("");break; 
	            case '#':filtered.append("");break; 
	            case '$':filtered.append("");break; 
	            case '%':filtered.append("");break; 
	            case '&':filtered.append("");break; 
	            case '*':filtered.append("");break;  
	            case '+':filtered.append("");break; 
	            case '=':filtered.append("");break;
	            case '|':filtered.append("");break; 
	            case '\\':filtered.append("");break; 
	            case '{':filtered.append("");break;
	            case '}':filtered.append("");break; 
	            case ':':filtered.append("");break; 
	            case ';':filtered.append("");break; 
	            case '\'':filtered.append("");break; 
	            case '.':filtered.append("");break;
	            case '<':filtered.append("");break; 
	            case '>':filtered.append("");break; 
	            case '/':filtered.append("");break; 
	            case ']':filtered.append("");break; 
	            case '(':filtered.append("");break;
	            case ')':filtered.append("");break; 
	            case '?':filtered.append("");break;   
	            case '_':filtered.append("");break; 
	            default:   filtered.append(c);   
        	}   
              
        }   
        return   (filtered.toString());   
    } 
    /**
     * 反过滤特殊字符
     * @param inStr
     * @return
     */
    public static String backFilter(String inStr){
        if(!hasSpecialChars(inStr)){//如果没有特殊字符,就返回原字符串      
        	return   inStr;   
        }   
        StringBuffer filtered = new StringBuffer(inStr.length());   
        char   c;   
        for(int i=0;i<=inStr.length()-1;i++){   
        	c=inStr.charAt(i); 
        	switch(c){               
	            case '^':filtered.append("^");break;   
	            case '[':filtered.append("[");break;   
	            case '`':filtered.append("`");break;   
	            case '~':filtered.append("~");break; 
	            case '!':filtered.append("!");break;
	            case '@':filtered.append("@");break; 
	            case '#':filtered.append("#");break; 
	            case '$':filtered.append("$");break; 
	            case '%':filtered.append("%");break; 
	            case '&':filtered.append("&");break; 
	            case '*':filtered.append("*");break;  
	            case '+':filtered.append("+");break; 
	            case '=':filtered.append("=");break;
	            case '|':filtered.append("|");break; 
	            case '\\':filtered.append("\\");break; 
	            case '{':filtered.append("{");break;
	            case '}':filtered.append("}");break; 
	            case ':':filtered.append(":");break; 
	            case ';':filtered.append(";");break; 
	            case '\'':filtered.append("\'");break; 
	            case '.':filtered.append(".");break;
	            case '<':filtered.append("<");break; 
	            case '>':filtered.append(">");break; 
	            case '/':filtered.append("/");break; 
	            case ']':filtered.append("]");break; 
	            case '(':filtered.append("(");break;
	            case ')':filtered.append(")");break; 
	            case '?':filtered.append("?");break;   
	            case '_':filtered.append("&ul;");break; 
	            default:   filtered.append(c);   
        	}   
        }   
        return   (filtered.toString());
    }
    
    public static void main(String[] args){
    	System.out.println("aaaaa = "+filter("''您好!?'%#>^=+您好!"));
    }
}
